package sis.clock;/*
 * @auther 顶风少年
 * @mail dfsn19970313@foxmail.com
 * @date 2019-08-01 16:53
 * @notify
 * @version 1.0
 */

import java.util.Date;

//时钟
public class Clock implements Runnable {
    //监听器
    private ClockListener listener;
    //是否启动
    private boolean run = true;

    //创建该对象则启动一个线程.
    public Clock(ClockListener listener) {
        //监听器
        this.listener = listener;
        new Thread(this).start();
    }

    //停止
    public void stop() {
        run = false;
    }

    //线程运行
    public void run(){
        //设置优先级 线程的优先级分为 3中max norm min 分别对应 1 5 10
        Thread.currentThread().setPriority(Thread.NORM_PRIORITY-1);
        //每次执行run的时间
        long lastTime = System.currentTimeMillis();
        while (run) {
            //休眠 10毫秒
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {

            }
            //当前时间
            long now = System.currentTimeMillis();
            //当前时间和开始时间 相差一秒则执行
            if ((now / 1000) - (lastTime / 1000) >= 1) {
                //监听执行
                listener.update(new Date());
                lastTime = now;
            }

        }
    }


}
